# from mypackage.mod1 import func1
from python.mypackage import mod2


def lis():
    """list"""
    list1 = [1, 2, 3, 4, 5]  # 直接赋值
    print(list1)

    l = list((1, 2, 5))
    print(l)

    m = list([1, 2, 3])

    print(m)

    m.append(6)  # 新增一个
    print(m)
    m.remove(6)  # 移除元素值，如果不存在会报错
    print(m)

    print(m[0], m[1], m[2], m[3], m[4], m[5])  # IndexError: list index out of range


def tup1():
    """
    Python 元组 允许重复
    Python 的元组与列表类似，不同之处在于元组的元素不能修改。
    元组使用小括号，列表使用方括号。
    元组创建很简单，只需要在括号中添加元素，并使用逗号隔开即可。
    """
    t1 = (1, 2, 3, 4, 5)
    print(t1)
    t2 = ('1', '1', '2', '3')
    print(t2)
    t3 = '1', '2', '3'  # 这样也识别成元组
    print(t3)
    t4 = ()  # 创建空元组
    print(t4)
    t5 = (1,)  # 元组中只包含一个元素时，需要在元素后面添加逗号
    print(t5)
    # 元组可以使用下标索引来访问元组中的值，如下实例:
    print(t1[0], t1[2])  # IndexError: tuple index out of range
    # 也能切片
    print(t1[1:])
    # 不能修改元组内数据，但能链接组合
    t9 = t1 + t2
    print(t9)
    # 元组中的元素值是不允许删除的，但我们可以使用del语句来删除整个元组
    del t1
    # 删掉了再引用会出错
    # print(t1)  # UnboundLocalError: cannot access local variable 't1' where it is not associated with a value

    print("-----")  # 遍历多个元组
    for t in (t2, t3, t4, t5, t9):
        print(t)
    print("-+++++-")
    for t in t2:  # 遍历元组内的元素
        print(t)


def dic():
    """
    字典是另一种可变容器模型，且可存储任意类型对象。
    字典的每个键值 key:value 对用冒号 : 分割，每个键值对之间用逗号 , 分割，整个字典包括在花括号 {} 中 ,格式如下所示：
    d = {key1 : value1, key2 : value2 }
    """
    d1 = {"a": "3", "b": 2}  # 创建字典
    print(d1['a'])  # 访问字典 dict['key']
    print(d1["b"])
    # print(d1["c"])  # KeyError: 'c' 字典内没这个key

    # 修改字典内某个key的值
    d1['a'] = "update"
    print(d1['a'])

    # del dict
    # 能删单一的元素也能清空字典，清空只需一项操作。
    # 显示删除一个字典用del命令，如下实例：
    # del d1['a']
    # # del d1['c']  # KeyError: 'c' 没这个key一律都是这个错误
    # print(d1)
    #
    # d1.clear() # 清空字典
    print(d1)
    print(str(d1))

    d1.fromkeys(['a', 'b'], [7, 8])
    print(d1)

    print(d1.get('a'))  # 两种取值方式 get 或 ['']
    print(d1['a'])

    d1['c'] = 3
    print(d1)

    for k, v in d1.items():
        print(k, '----', v)

    print(d1.keys())
    for k in d1.keys():
        print(k, '----', d1[k])

    for value in d1.values():
        print(value, '--xx--', value)

    a = d1.popitem()  # 返回的是一个原则，且返回的是最后一个元素的
    print(a)
    b = d1.pop('d', '默认值')  # 取出key=d的值，否则就是赋后面的默认值
    print(b)
    print(d1)


def mo():
    """引用其他模块并使用"""
    # mod1.func1()
    # mod2.func2()
    # import mypackage.mod1
    # import mypackage.mod2
    # func1()
    mod2.func2()
    print(1)


if __name__ == '__main__':
    # lis()
    # tup1()
    # dic()
    mo()
